package com.supplychain.financial.parent.api;

import java.util.Set;

/**
 * Redis缓存
 * @author zhengchuan
 *
 */
public interface RedisService {
	/**
     * 添加或者更新key value 并且设置存活时间(byte)
     * 
     * @param key key的byte数组
     * @param value	value的byte数组
     * @param expire 存活时间，单位为秒,为空则不设置
     * @return 添加或者更新信息
     */
    String set(final byte[] key, final byte[] value, final Long seconds);
    /**
     * 添加或者更新key value 并且设置存活时间
     * 
     * @param key String类型 key
     * @param value Object类型value
     * @param expire 存活时间，单位为秒,为空则不设置
     * @return 添加或者更新信息
     */
    String set(final String key, final Object value, final Long seconds);
    
    /**
     * 根据key获取value
     * @param key
     * @return	返回值
     */
    Object get(final String key);
    /**
     * 删除指定key对应的数据
     * @param key
     * @return	是否删除成功
     */
    boolean del(final String key);
    /**
     * 清空缓存
     */
    boolean flushDb();
    /**
     * 检查key是否已经存在
     * 
     * @param key
     * @return
     */
    boolean exists(final String key);
    
    /**
     * 通过正则匹配keys
     * 
     * @param pattern
     * @return
     */
    Set<byte[]> keys(final String pattern);
    

    /**
     * 删除缓存
     * @param bytes 缓存的字节数组集合
     * @return  是否删除成功
     */
    boolean remove(Set<byte[]> bytesSet);

}
